#ifndef BOARD_H
# define BOARD_H

typedef unsigned __int64 U64;

class Board
{
	U64 pieceBB[14];
	U64 emptyBB;
	U64 occupiedBB;

public:
	enum enumPiece
	{
		nWhite,     // any white piece
		nBlack,     // any black piece
		nWhitePawn, // white Pawn
		nBlackPawn, // white Pawn
		nWhiteRook,
		nBlackRook,
		nWhiteKnight,
		nBlackKnight,
		nWhiteBishop,
		nBlackBishop,
		nWhiteQueen,
		nBlackQueen,
		nWhiteKing,
		nBlackKing
	};

	Board();
	~Board();


private:
	U64 getPieceSet(enumPiece pt) const;
	U64 getWhitePawns() const;
	U64 getBlackPawns() const;
	U64 getWhiteRook() const;
	U64 getBlackRook() const;
	U64 getWhiteKnight() const;
	U64 getBlackKnight() const;
	U64 getWhiteBishop() const;
	U64 getBlackBishop() const;
	U64 getWhiteQueen() const;
	U64 getBlackQueen() const;
	U64 getWhiteKing() const;
	U64 getBlackKing() const;
	U64 getWhites() const;
	U64 getBlacks() const;
	U64 getOccupied() const;
	U64 getEmpty() const;
	unsigned int firstOne(U64 bitmap); //find the first bit at 1

}; //!class Board




#endif // !BOARD_H